<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<!--用JS监听一排水平排列的按键, 用手指或鼠标拖动后改变位置, 让其插入到新的位置(不是对换, )
		- 分别解释数组方法pop() push() unshift() shift()?
		- 事件绑定和普通事件有什么区别?
		- ajax请求的时候get和post方式的区别?
		
		使用Get请求时,参数在URL中显示,而使用Post方式,则不会显示出来
		使用Get请求发送数据量小,Post请求发送数据量大
		
		- call和apply的区别?
		事件委托是什么, 使用事件委托有什么好处?-->
		<p>
			第一个只能拖拽,算不明白内个距离了,有想法算不明白,就不传了
		</p>
		<p>
			pop()方法用于删除并返回数组的最后一个元素.<br>
			pop() 方法将删除 arrayObject 的最后一个元素，把数组长度减 1，并且返回它删除的元素的值。<br>
			如果数组已经为空，则 pop() 不改变数组，并返回 undefined 值。<br>
			
			push()方法可向数组的末尾添加一个或多个元素,并返回新的长度<br>
			push() 方法可把它的参数顺序添加到 arrayObject 的尾部。<br>
			它直接修改 arrayObject，而不是创建一个新的数组。push() 方法和 pop() 方法使用数组提供的先进后出栈的功能。<br>]\
			
			unshift()方法可向数组的开头添加一个或更多元素,并返回新的长度<br>
			unshift() 方法将把它的参数插入 arrayObject 的头部，并将已经存在的元素顺次地移到较高的下标处，以便留出空间。<br>
			该方法的第一个参数将成为数组的新元素 0，如果还有第二个参数，它将成为新的元素 1，以此类推。<br>
			请注意，unshift() 方法不创建新的创建，而是直接修改原有的数组。<br>
			
			shift() 方法用于把数组的第一个元素从其中删除，并返回第一个元素的值。<br>
			如果数组是空的，那么 shift() 方法将不进行任何操作，返回 undefined 值。<br>
			请注意，该方法不创建新数组，而是直接修改原有的 arrayObject。<br>
		</p>
		<p>
			普通添加事件 只能添加一个相同的事件 如果添加多个最后的会覆盖前面的事件 <br>
			事件绑定可以绑定多个并且事件触发后按绑定顺序来执行;<br>
			addEventListener 不兼容低版本ie如果使用需要解决兼容的问题;<br>
		</p>
		<p>
			Ajax中我们经常用到get和post请求.那么什么时候用get请求,什么时候用post方式请求呢? 在做回答前我们首先要了解get和post的区别.
			1、 get是把参数数据队列加到提交表单的ACTION属性所指的URL中，值和表单内各个字段一一对应，在URL中可以看到。<br>
			post是通过HTTP post机制，将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。<br>
			2、 对于get方式，服务器端用Request.QueryString获取变量的值，对于post方式，服务器端用Request.Form获取提交的数据。两种方式的参数都可以用Request来获得。<br>
			3、get传送的数据量较小，不能大于2KB。post传送的数据量较大，一般被默认为不受限制。但理论上，因服务器的不同而异.<br>
			4、get安全性非常低，post安全性较高。<br>
		</p>
		<p>
			call方法: <br>
			语法：call(thisObj，Object)<br>
			定义：调用一个对象的一个方法，以另一个对象替换当前对象。<br>
			说明：call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象.<br>
			如果没有提供 thisObj 参数，那么 Global 对象被用作 thisObj。<br>
			
			apply方法:<br>
			语法：apply(thisObj，[argArray])<br>
			定义：应用某一对象的一个方法，用另一个对象替换当前对象。<br>
			说明： 如果 argArray 不是一个有效的数组或者不是 arguments 对象，那么将导致一个 TypeError.<br>
			如果没有提供 argArray 和 thisObj 任何一个参数，那么 Global 对象将被用作 thisObj， 并且无法被传递任何参数.<br>
		</p>
		<p>
			使用事件委托技术能让你避免对特定的每个节点添加事件监听器；相反，事件监听器是被添加到它们的父元素上。事件监听器会分析从子元素冒泡上来的事件，找到是哪个子元素的事件。<br>
			当子元素的事件冒泡到父ul元素时，你可以检查事件对象的target属性，捕获真正被点击的节点元素的引用。<br>
			效果:1.提高性能2.新添加的元素会有之前的事件<br>
		</p>
	</body>
</html>
